<template>
  <div>
    <h2>欢迎来到清华大学</h2>
    <p>
        别非要力量哥辊甼国杳力量哥力量哥枯顶替顶替顶替
        别非要力量哥辊甼国杳力量哥力量哥枯顶替顶替顶替
        别非要力量哥辊甼国杳力量哥力量哥枯顶替顶替顶替
        别非要力量哥辊甼国杳力量哥力量哥枯顶替顶替顶替
    </p>

    <nav>
      <button @click="hotClick">今日头条</button>
      <button @click="newsClick">内容详情</button>
    </nav>
    {{message}}
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'home',
  data(){
    return {
      message:'视图更新胃',
      link:"/home/hot"
    }
  },
  created(){
    console.log("home created");
    // document.title = "首页";
  },
  mounted(){
    console.log("home mounted");
  },
  updated(){
    console.log("home updated");
  },
  destroyed(){
    console.log("home destoryed");
  },
  activated(){//当前路由组件处于活跃的时候调用
    console.log("home activated---------");
    this.$router.replace(this.link).catch(err => err);
  },
  deactivated(){//当前路由组件不处于活跃的时候调用
    console.log("home deactivated---------");
  },
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被验证前调用
    // 不能获取组件实例 `this` ！
    // 因为当守卫执行时，组件实例还没被创建！
    // console.log("home beforeRouteEnter--------", this);
    // console.log(this.message);
    next();
  },
  beforeRouteUpdate(to, from, next) {
    // 在当前路由改变，但是该组件被复用时调用
    // 举例来说，对于一个带有动态参数的路径 `/users/:id`，在 `/users/1` 和 `/users/2` 之间跳转的时候，
    // 由于会渲染同样的 `UserDetails` 组件，因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 因为在这种情况发生的时候，组件已经挂载好了，导航守卫可以访问组件实例 `this`
    // console.log("home beforeRouteUpdate--------");
    // console.log(this);
    next();
  },
  beforeRouteLeave(to, from, next) {
    // 在导航离开渲染该组件的对应路由时调用
    // 与 `beforeRouteUpdate` 一样，它可以访问组件实例 `this`
    // console.log("home beforeRouteLeave--------");
    // console.log(this.message);
    this.link = this.$route.path;
    next();
  },
  methods:{
      hotClick(){
          this.$router.replace("/home/hot").catch(err => err);
          this.message = "sdfdsfs";
      },
      newsClick(){
          this.$router.replace("/home/news").catch(err => err);
      }
  }
}
</script>

<style scoped>

</style>
